===============================================================================
= NANO - usage                                                                =
===============================================================================

 introduction
 symboles et tiquettes
 instructions
 litraux
 expressions
 rgions
 ligne de commande

===============================================================================
= introduction                                                                =
===============================================================================

 NANO est un petit assembleur (2 passes) ayant pour cible la PC-Engine:

 - Il prend en entre un unique fichier source (.asm).

   Les autres fichiers sources ainsi que les ressources binaires sont inclus
    explicitement depuis le fichier principal.

 - Il gnre en sortie un fichier ROM (.pce) et de faon optionnelle un listing.


 Attention:

 ***********************************************************
 *                                                         *
 *  !!! utilisez ce programme  vos risques et prils !!!  *
 *                                                         *
 ***********************************************************

 Conseil:

  Il est recommand de ne pas utiliser de caractres ASCII tendus dans les
   fichiers sources.

 Note:

  L'assembleur cre un fichier temporaire qui porte le nom du fichier d'entre
   avec l'extension (.tmp).

===============================================================================
= symboles et tiquettes                                                      =
===============================================================================

 Un symbole ne peut pas commencer par un chiffre.
 Aucune distinction n'est faite entre les majuscules et les minuscules.

 Les caractres valides sont:

  [A ~ Z], [a ~ z], [0 ~ 9], _

 Un symbole peut avoir une taille quelconque mais seuls les 16 premiers
  caractres sont significatifs (le listing n'en affiche que 15).

 Une tiquette commence toujours au dbut de ligne (colonne 1).
 Un caractre ':' peut conclure la dclaration:

  label1

  label2:

 Par dfaut les tiquettes ont une visibilit globale mais il est possible de
  les rendre locales en leur ajoutant un suffixe '?':

  label3?

  label4?:

 Ces dernires seront visibles jusqu' la prochaine tiquette globale.

===============================================================================
= instructions                                                                =
===============================================================================

 Par dfaut, tout mnmonique doit obligatoirement commencer aprs la premire
  colonne (c'est--dire aprs le champ rserv  l'tiquette).

 Les mnmoniques des pseudo-instructions ont le droit d'avoir un prfixe '.':

  .ORG $E000

 Dans ce cas, ils peuvent exceptionnellement tres placs dans la premire
  colonne.

 Pour une instruction avec un champ d'oprande compos, des espaces peuvent
  tre placs  la droite des sparateurs:

  DB  $00,$01,$02,$03           ; classique

  DB  $00, $01, $02, $03        ; avec espaces

                                     ***

 Les instructions machine sont listes dans le source 'inst.asm'.

 L'assembleur choisit automatiquement entre les multiples modes d'adressages
  ZPG et ABS.

 Pour forcer un mode ABS il suffit de placer l'oprateur '!' devant l'oprande.

                                     ***

 Les pseudo-instructions sont dtailles dans le document 'pseudo.txt'

===============================================================================
= litraux                                                                    =
===============================================================================

 Tout nombre commanant par un chiffre reprsente une valeur en base 10:

  32

 Un prfixe '$' indique une valeur en base 16:

  $20      (32 en base 16)

 Un prfixe '%' indique une valeur en base 2:

  %100000  (32 en base 2)

 Un caractre ASCII est plac entre 2 apostrophes:

  'A'

 Une chane de caractres est place entre 2 guillemets:

  "hello"

 Enfin le caractre '@' reprsente l'adresse de l'instruction courante.

===============================================================================
= expressions                                                                 =
===============================================================================

 Toute valeur peut tre exprime sous la forme d'une expression.

 Voici la liste des oprateurs supports:

  +------------+--------------+---------------+----------+
  | oprateurs | oprations   | associativit | priorit |
  +------------+--------------+---------------+----------+
  | ( )        | parenthses  | -             |    0     |
  | - ~        | neg, not     |  droite      |    1     |
  | * /        | mul, div     |  gauche      |    2     |
  | + -        | add, sub     |  gauche      |    3     |
  | << >>      | shift L/R    |  gauche      |    4     |
  | &          | and          |  gauche      |    5     |
  | ^          | xor          |  gauche      |    6     |
  | |          | or           |  gauche      |    7     |
  +------------+--------------+---------------+----------+

 Une expression peut tre prcde par l'un de ces 2 oprateurs:

  +------------+-----------------------------------------------+
  | oprateurs | fonctions                                     |
  +------------+-----------------------------------------------+
  | <          | prend l'octet de poids faible de l'expression |
  | >          | prend l'octet de poids fort de l'expression   |
  +------------+-----------------------------------------------+

===============================================================================
= rgions                                                                     =
===============================================================================

 L'ensemble de l'assemblage se fait sur des rgions mmoires.

 Il en existe 3 par dfaut:

  +----------+-----------+-------------------+---------------------------+
  | nom      | type      | adresses logiques | description               |
  +----------+-----------+-------------------+---------------------------+
  | zpg      | RAM       | $2000 ~ $20FF     | page $00 de la RAM        |
  | bss      | RAM       | $2200 ~ $3FFF     | pages $02~$1F de la RAM   |
  | main     | ROM       | $E000 ~ $FFFF     | premire banque de la ROM |
  +----------+-----------+-------------------+---------------------------+

 La slection d'une rgion se fait avec l'instruction USE:

  USE main

 La cration de rgions ROM supplmentaires se fait avec l'instruction REGION.

 Les banques de la ROM sont alloues squentiellement, initialises avec la
  valeur $FF.

 Une banque  une taille de 8192 octets.
 Une ROM peut avoir jusqu' 128 banques (soit un total de 1024K).

 Le nom d'une rgion retourne l'index de sa premire banque
  (zpg et bss retournent la valeur $F8).

===============================================================================
= ligne de commande                                                           =
===============================================================================

 nano [source] {paramtres}

  'source' est le nom d'un fichier avec l'extension (.asm)

  les paramtres (optionnels):

  +------------+--------------------------------------------------------+
  | paramtres | description                                            |
  +------------+--------------------------------------------------------+
  | -n         | ne gnre pas de fichier ROM (.pce) en sortie          |
  |            |                                                        |
  | -o[nom]    | dfinit un autre nom pour le fichier ROM (.pce)        |
  |            |                                                        |
  | -l{cible}  | gnre un fichier listing (.lst):                      |
  |            |  - celui du source principal si aucun nom n'est fourni |
  +------------+--------------------------------------------------------+

===============================================================================
= EOF                                                                         =
===============================================================================
